Preparativos.

Carga de los paquetes.

library(sf)
library(raster)
library(leaflet)
library(leaflet.extras)
library(dplyr)
library(DT)

Carga de los datos.

#carga de los registros de presencia de las orquideas
orquideas <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )


# Carga de la capa de ASP
ASP <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/sinac/asp/asp-wgs84.geojson",
    quiet = TRUE
  )
# Sistema de coordenadas
st_crs(orquideas) = 4326
st_crs(ASP) = 4326

Limpieza de los datos.

orquideas <-
  orquideas %>%
  mutate(coordinateUncertaintyInMeters = as.numeric(coordinateUncertaintyInMeters)) %>%
  mutate(eventDate = as.Date(eventDate, "%Y-%m-%d")) 

orquideas$species[orquideas$species == ""] <- "orquideas"
cat("Cantidad original de registros: ", nrow(orquideas))
## Cantidad original de registros:  29863
orquideas <- orquideas %>%
  filter(!is.na(coordinateUncertaintyInMeters) & coordinateUncertaintyInMeters <= 1000)%>%
  filter(species!="orquideas")

cat("Cantidad de registros después de descartar los datos poco precisos: ", nrow(orquideas))
## Cantidad de registros después de descartar los datos poco precisos:  646
cat("Cantidad original de registros de ASP: ", nrow(ASP))
## Cantidad original de registros de ASP:  171
ASP <- ASP %>%
  filter(descripcio!="Area Marina de Manejo" & descripcio!="Area marina protegida")

cat("Cantidad de registros después de descartar las áreas marinas: ", nrow(ASP))
## Cantidad de registros después de descartar las áreas marinas:  148
# st_join()
ASP_registros <-
  ASP %>%
  st_make_valid() %>%
  st_join(orquideas) %>%
  group_by(nombre_asp) %>%
  summarize(especies = n())

# Asignación de sistema de coordenadas
st_crs(ASP_registros) = 4326

Mapa leaflet.

# Paleta de color azules
pal_especies <-
  colorNumeric(palette = "PuBuGn",
               domain = ASP_registros$especies,
               na.color = "transparent")
leaflet() %>%
  setView(lng = -84.0, lat = 10.0, zoom = 7) %>%
  addProviderTiles(providers$CartoDB.Positron, group = "Grey OSM") %>%
  addPolygons(
    data = ASP_registros,
    fillColor = ~ pal_especies (ASP_registros$especies),
    fillOpacity = 0.9,
    stroke = TRUE,
    color = "black",
    weight = 1,
    popup = paste(
      paste(
        "<strong>Localidad:</strong>",
        ASP_registros$nombre_asp
      ),
      paste(
        "<strong>Cantidad de especies de orquídeas:</strong>",
        ASP_registros$especies
        
      ),
      sep = '<br/>'
    ),
    group = "Localidad y especies"
  ) %>%
  addLayersControl(baseGroups = c("Grey OSM"),
                   overlayGroups = c("Localidad y especies")) %>%
  addLegend(
    position = "bottomright",
    pal = pal_especies,
    values = ASP_registros$especies,
    group = "Localidad y especies",
    title = "Cantidad de <br> especies de <br> orquídeas")